OpenCamLib (OCL) to biblioteka open source, której celem jest dostarczanie algorytmów komputerowego wspomagania wytwarzania (CAM). FreeCAD wykorzystuje OCL w eksperymentalnie w narzędziu Powierzchnia 3D i innych funkcjach.
GitHub: https://github.com/aewallin/opencamlib
Strona domowa: http://www.anderswallin.net/CAM/
Uwaga: Począwszy od FreeCAD w wersji 0.19, OCL powinien być dołączony do wszystkich pakietów dystrybucyjnych Windows.
Aby zainstalować OCL w systemie Windows, postępuj zgodnie z poniższymi instrukcjami.
Repozytorium znajduje się w serwisie GitHub i zawiera podstawowe instrukcje instalacji.
Przed rozpoczęciem instalacji lub w jej trakcie, prawdopodobnie konieczne będzie zainstalowanie dodatkowych pakietów:
Dla przykładu:
sudo apt install cmake
sudo apt install libboost-program-options-dev
# Optional, for documentation:
sudo apt-get install doxygen
sudo apt-get install texlive-full
Uwaga: "libboost-program-options-dev" może być zastąpione przez "libboost-all-dev".
Jeśli masz trudności, dokładnie przejrzyj wszystkie komunikaty o błędach, które otrzymujesz podczas faz cmake
i make
, ponieważ może być konieczne zainstalowanie dodatkowych pakietów.
import sys
sys.path.append('/usr/opencamlib/')
import ocl
Zidentyfikuj zainstalowaną wersję cmake za pomocą instrukcji cmake --version
Dla wersji cmake >= 3.12 należy dodać te flagi:
cmake -DBUILD_PY_LIB=ON -DUSE_PY_3=ON -DCMAKE_BUILD_TYPE=Release ../src -Wno-dev
Dla wersji cmake < 3.12 (jak w Ubuntu 18.04, który ma 3.10), najpierw musisz edytować src/pythonlib/pythonlib.cmake
i zastosować tę poprawkę:
Index: opencamlib-2019.07/src/pythonlib/pythonlib.cmake =================================================================== --- opencamlib-2019.07.orig/src/pythonlib/pythonlib.cmake +++ opencamlib-2019.07/src/pythonlib/pythonlib.cmake @@ -48,13 +48,13 @@ if(${CMAKE_VERSION} VERSION_LESS "3.12.0 message("Python not found") endif() execute_process( - COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(0,0,\"/usr/local\")" + COMMAND ${PYTHON_EXECUTABLE} -c "import site; print(site.getsitepackages()[-1])" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE ) # on Ubuntu 11.10 this outputs: /usr/local/lib/python2.7/dist-packages execute_process( - COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(plat_specific=1,standard_lib=0,prefix=\"/usr/local\")" + COMMAND ${PYTHON_EXECUTABLE} -c "import site; print(site.getsitepackages()[-1])" OUTPUT_VARIABLE PYTHON_ARCH_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE )
Następnie, aby Python 3 był poprawnie wykrywany, należy dodać 2 dodatkowe flagi do linii cmake:
cmake -DBUILD_PY_LIB=ON -DUSE_PY_3=ON -DPYTHON_EXECUTABLE="$(which python3)" -DPYTHON_VERSION_SUFFIX=3 -DCMAKE_BUILD_TYPE=Release ../src -Wno-dev
Zobacz forum FreeCAD pod adresem Re: Jak aktywować openCamLib po kompilacji i kilka postów po nim.
git clone https://github.com/aewallin/opencamlib
cd opencamlib
mkdir build
cd build
cmake -DBUILD_PY_LIB=ON -DUSE_PY_3=ON -DCMAKE_BUILD_TYPE=Release .. -Wno-dev
make -j4
make install
Aby przetestować kompilację, wprowadź następujące polecenie w konsoli Python:
import area
import ocl
dir(ocl)
Wartością zwracaną powinna być:
['AdaptivePathDropCutter', 'AdaptivePathDropCutter_base', 'AdaptiveWaterline', 'AdaptiveWaterline_base', 'Arc', 'ArcSpanType', 'BallConeCutter', 'BallCutter', 'BatchDropCutter', 'BatchDropCutter_base', 'BatchPushCutter', 'BatchPushCutter_base', 'Bbox', 'BullConeCutter', 'BullCutter', 'CCPoint', 'CCType', 'CLPoint', 'CompBallCutter', 'CompCylCutter', 'ConeConeCutter', 'ConeCutter', 'CutterLocationSurface', 'CylConeCutter', 'CylCutter', 'Ellipse', 'EllipsePosition', 'Fiber', 'Fiber_base', 'Interval', 'Line', 'LineCLFilter', 'LineCLFilter_base', 'LineSpanType', 'MillingCutter', 'Path', 'PathDropCutter', 'PathDropCutter_base', 'Path_base', 'Point', 'STLReader', 'STLSurf', 'STLSurf_base', 'SpanType', 'Triangle', 'Triangle_base', 'Waterline', 'Waterline_base', 'WeaveVertexType', 'ZigZag', 'ZigZag_base', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'eps', 'epsD', 'epsF', 'version']
W przypadku błędu, zwracaną wartością będzie:
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
Dla cmake opcja Release jest bardzo ważna, gdy używasz Debug area i ocl będą kolidować i jedna z bibliotek nie zostanie załadowana (w zależności od tego, co zostało załadowane jako pierwsze).
Jeśli napotkasz trudności, możesz znaleźć dodatkową pomoc w tych postach na forum:
Dziękujemy Dr Anders Wallin za udostępnienie OCL do życia publicznego.